package indi.zhifa.engine.bailan6.common.enumMemo.service;


import indi.zhifa.engine.bailan6.common.enumMemo.entity.EnumNodeVo;
import indi.zhifa.engine.bailan6.common.enumMemo.entity.EnumVo;
import indi.zhifa.engine.bailan6.common.enumMemo.entity.IEnumVo;

import java.lang.reflect.InvocationTargetException;

/**
 * @author hatak
 */
public interface IEnumMemoService {

    /**
     * 初始化Enum
     *
     */
    void initEnum(String[] pEnumBasePackages) throws InvocationTargetException, IllegalAccessException;


    /**
     * 筛选Enum
     *
     * @param pName enum名
     * @return Map<String, List < EnumDto>> 所有的Enum
     */
    IEnumVo findByName(String pName);

    /**
     * 使用枚举查找枚举节点
     *
     * @param pCls 类
     * @return EnumNodeDto 枚举节点
     */
    EnumNodeVo findByClass(Class pCls);

    /**
     * 获取所有的枚举
     *
     * @return List<EnumDto> 枚举列表
     */
    EnumVo[] list();

    /**
     * 添加枚举
     *
     * @param pEnumDto 枚举
     */
    void addEnumDto(EnumVo pEnumDto);

}
